/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.dew.controller;

import java.io.IOException;
import java.util.List;
import javax.servlet.ServletConfig;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import pe.edu.upc.dew.model.Paquete;
import pe.edu.upc.dew.service.PaqueteService;
import pe.edu.upc.dew.service.PaqueteServiceImpl;

import pe.edu.upc.dew.util.ConstantesGimnasio;
import pe.edu.upc.dew.util.Util;

/**
 *
 * @author Pedro
 */
public class PaquetesServlet extends HttpServlet {

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);

        ApplicationContext context =
            WebApplicationContextUtils.getWebApplicationContext(
                config.getServletContext());
        this.paqueteService = context.getBean("paqueteService", PaqueteService.class);

    }


    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */

    private PaqueteService paqueteService;

    public PaqueteService getPaqueteService() {
        return paqueteService;
    }

    public void setPaqueteService(PaqueteService paqueteService) {
        this.paqueteService = paqueteService;
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
         try{
               String accion = request.getParameter("accion");

               // Despues del input de tipo hiden en el jsp , preguntar el tipo de accion enviado

               if(ConstantesGimnasio.ACCION_REGISTRAR.equals(accion)){
                    // Llamar al model
                    Paquete paquete = obtenerPaqueteDePantalla(request);
                     //se envia a registrar
                    //int resp = paqueteService.registrarPaquete(paquete);
                    int resp = paqueteService.registrarPaquete(paquete);



                    

                    // subiendo al contexto
                    /////request.getSession().getServletContext().setAttribute(ConstantesGimnasio.LISTA_PAQUETES_CONTEXTO,paquetes);


                    //if(resp > 0){
                     if(resp > 0){
                        //obteniendo la lista de paquete del contexto
                        List <Paquete> paquetes = (List <Paquete>)request.getSession(false).getServletContext().getAttribute(ConstantesGimnasio.LISTA_PAQUETES_CONTEXTO);

                        //Asignamos el codigo del nuevo Paquete
                        paquete.setCodigo(resp);

                        // agregando a la lista
                        paquetes.add(paquete);
                        mostrarMensaje(ConstantesGimnasio.MENSAJE_REGISTRO_EXITOSO,request);
                    }else{
                        mostrarMensaje(ConstantesGimnasio.MENSAJE_REGISTRO_ERROR,request);

                    }
                }
          }catch(NumberFormatException nfex){
                mostrarMensaje(ConstantesGimnasio.MENSAJE_ERROR_DATOS_OBLIGATORIOS,request);
          }
             request.getRequestDispatcher("Administrador/registroPaquetes.jsp").forward(request, response);


        }
    private Paquete obtenerPaqueteDePantalla(HttpServletRequest request){

            Paquete paquete = new Paquete();
            paquete.setCosto(Double.parseDouble(Util.getDatoStringPantalla("txtCosto",request)));
            paquete.setNombre (Util.getDatoStringPantalla("txtNombre",request));
            paquete.setDescripcion(Util.getDatoStringPantalla("txtDescripcion",request));
            paquete.setMeses(Integer.parseInt((Util.getDatoStringPantalla("cboTiempo",request))));

            //Se obtienen los servicios seleccionados
            paquete.setActividad(Util.obtenerOpcionesMultiplesPantalla("cboActividades2",ConstantesGimnasio.LISTA_ACTIVIDADES_CONTEXTO,request));

        return paquete;
    }

    private void mostrarMensaje(String mensaje,HttpServletRequest req) {
        req.setAttribute(ConstantesGimnasio.MENSAJE_REQUEST,mensaje);
    }

}
